import java.security.KeyRep;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Supplier;

public class 责任链模式<T,R>  {
    /**
     * 用户输入kw
     * O,U
     *
     * 1:kw(验证处理，非法字符串处理)->String
     *
     * 2:kw(这里会设计到产品策略,映射、大小写处理)>test(T t,R r)
     *
     *
     * 3:kw(这里设计产品后面的基础策略，比如分词)>test1(R r,C c)
     *
     * 4:kw(solr层面的基础策略)>test2(R r,C c)
     *
     * 5:kw(solr层面的产品策略)>test2(R r,C c)
     *
     * ->Sql >>solr
     *
     * 2,3步骤之间可能会不同的顺序
     */
    public static void main(String[] args) {

    //    Function<String,String> function0=(String searchWord)->{
    //        System.out.println("function0");
    //        return searchWord+"1";
    //    };
    //    Function<String, List<String>> function1=(String searchWord)->{
    //        System.out.println("function1");
    //        ArrayList<String> objects = new ArrayList<>();
    //        return objects;
    //    };
    //    Function<List<String>,Integer> function2=(List<String> searchWord)-> {
    //        System.out.println("function2");
    //        return 1;
    //    };
    //    Function<String, List<String>> stringListFunction = function0.andThen(function1);
    //    Function<String, Integer> stringIntegerFunction = stringListFunction.andThen(function2);
    //    Integer apply = stringIntegerFunction.apply("1");
    //
    //    List<String> list=new ArrayList<>();
    //    list.add("1");
    //    list.add("2");
    //    list.add("3");
    //    list.add("4");
    //    list.add("5");
    //    List<String> removeList = new ArrayList<>();
    //    removeList.add("1");
    //    removeList.add("2");
    //    Set set=new HashSet<String>(removeList);
    //
    //    for (int i = 0; i < list.size(); i++) {
    //        if(set.contains(list.get(i))){
    //            list.remove(i);
    //        }
    //        //for (int j = 0; j < removeList.size(); j++) {
    //        //    if(removeList.get(j).equals(list.get(i))){
    //        //        list.remove(list.get(i));
    //        //    }
    //        //}
    //    }
    //    list.stream().forEach(System.out::println);
    }

}
